// 对于axios进行二次封装
import axios from "axios";
//引入进度条 nprogress里面有start：进度条开始 done:进度条结束
import nprogress from 'nprogress';
//在引入进度条的样式
import "nprogress/nprogress.css"

//第一步：利用axios对象的方法创建axios实例，request就是axios，可以配置
const mockRequests = axios.create({
//    配置对象
//    基础路径，发请求自动带/api
    baseURL:"/mock",
    //代表超时5s的话就失败
    timeout:5000,
})
//请求拦截器：在发请求之前，请求拦截器可以检测到，可以在请求发出去之前做一些事情
mockRequests.interceptors.request.use((config)=>{
    //进度条开始
    nprogress.start();

    //    这里的config是配置对象，有一个属性为 headers请求头
    return config
})

//响应拦截器
mockRequests.interceptors.response.use((res)=>{
    nprogress.done();
    //    成功的回调函数：服务器响应数据回来以后，响应拦截器可以检测到，可以做一些业务
    return res.data;
},(error)=>{
//    响应失败的回调，
    return  Promise.reject(new Error('faile'))
})



//对外暴露

export default mockRequests